load("@prysm//tools/go:def.bzl", "go_library", "go_test")
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
load("//tools:prysm_image.bzl", "prysm_image_upload")

go_library(
    name = "go_default_library",
    srcs = ["bootnode.go"],
    importpath = "github.com/OffchainLabs/prysm/v7/tools/bootnode",
    visibility = ["//visibility:private"],
    deps = [
        "//async:go_default_library",
        "//beacon-chain/core/signing:go_default_library",
        "//config/params:go_default_library",
        "//crypto/ecdsa:go_default_library",
        "//encoding/bytesutil:go_default_library",
        "//io/logs:go_default_library",
        "//network:go_default_library",
        "//proto/prysm/v1alpha1:go_default_library",
        "//runtime/maxprocs:go_default_library",
        "//runtime/version:go_default_library",
        "@com_github_ethereum_go_ethereum//crypto:go_default_library",
        "@com_github_ethereum_go_ethereum//log:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/discover:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/enode:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/enr:go_default_library",
        "@com_github_libp2p_go_libp2p//core/crypto:go_default_library",
        "@com_github_pkg_errors//:go_default_library",
        "@com_github_prometheus_client_golang//prometheus:go_default_library",
        "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library",
        "@com_github_prysmaticlabs_go_bitfield//:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
    ],
)

go_binary(
    name = "bootnode",
    embed = [":go_default_library"],
    visibility = ["//visibility:public"],
)

go_test(
    name = "go_default_test",
    srcs = ["bootnode_test.go"],
    embed = [":go_default_library"],
    flaky = True,
    deps = [
        "//crypto/ecdsa:go_default_library",
        "//network:go_default_library",
        "//runtime/maxprocs:go_default_library",
        "//testing/assert:go_default_library",
        "//testing/require:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/discover:go_default_library",
        "@com_github_ethereum_go_ethereum//p2p/enode:go_default_library",
        "@com_github_libp2p_go_libp2p//core/crypto:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
    ],
)

prysm_image_upload(
    name = "push_images",
    binary = ":bootnode",
    entrypoint = ["/bootnode"],
    repository = "gcr.io/offchainlabs/prysm/bootnode",
    symlinks = {
        # Backwards compatibility for images that depended on the old filepath.
        "/app/tools/bootnode/bootnode": "/bootnode",
    },
    tags = ["manual"],
)
